package solutions.ferpa.ztest.intf;

import br.com.telescope.adsrt.lib.*;
import br.com.telescope.t2.AccessPolicy;
import br.com.telescope.t2.ServiceModel;
import br.com.telescope.t2.exception.ApplicationRuntimeException;
import br.com.telescope.t2.feature.CustomFeature;
import solutions.ferpa.ztest.ent.*;

/**
 * Importação das estruturas de acesso.
 * <p>
 * Interface que permite a um usuário administrador a disparar a 
 * importação dos elementos necessários para o controle de acesso 
 * definidos em tempo de desenvolvimento.
 * <P>
 * * Importa preferencias cadastradas no telescope para a base de 
 * produção
 * <P>
 * Telescope origin: RTSYSINF.IMP_OPERACOES
 * <P>
 * @author TELESCOPE - Build task T2 Web Interface Generator
 * <P>
 * @version 0.1
 */
public class ImpOperacoes extends ServiceModel {
    
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    public static final String GLOBAL_NAME = "RTSYSINF.IMP_OPERACOES";
    
    @Override
    public String globalName() {
        return GLOBAL_NAME;
    }
    
    {
        setTitle("Importação das estruturas de acesso");
    }
    
    
    // Record items
    
    // Query items
    
    @Override
    public void initAttributes() {
        
    }
    
    @Override
    public String getDefaultOrderBy() {
        return "";
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="HOME">
    public class FHome extends CustomFeature {
        
        @Override
        public void initForm() {
        }
        
        @Override
        public void onAction() {
            addSubmit(getFeature("IMPORTAR")).label("Importar dados").icon("importar.gif");
        }
        
        {
            setFeatureName("HOME");
            setTitle("Tela de importação de dados");
            setPrimary(false);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="IMPORTAR">
    public class FImportar extends CustomFeature {
        
        @Override
        public void initForm() {
        }
        
        @Override
        public int getAccessPolicy() {
            return AccessPolicy.PUBLIC;
        }
        
        @Override
        public void execute() {
            try {
                importar();
            } catch (AdsException ex) {
                throw new ApplicationRuntimeException(ex);
            }
        }
        
        {
            setFeatureName("IMPORTAR");
            setTitle("Importar dados");
            setPrimary(false);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="initFeatures">
    
    @Override
    protected void initFeatures() {
        addFeature(new FHome());
        addFeature(new FImportar());
        super.initFeatures();
    }
    
    @Override
    public String getDefaultFeature() {
        return "HOME";
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Getters and Setters">
    // </editor-fold>
    
    /**
     * Importar dados.
     * <p>
     * Procedimento que busca os dados das interfaces e operacoes do sistema 
     * que foram embarcadas junto com a aplicação. Ao ser executado, ele 
     * monta um relatório indicando o que foi realizado.
     * <P>
     * 
     * <P>
     * Este procedimento também importa as preferencias definidas no 
     * repositório (propriedades do tipo Preference)
     * <P>
     * Quando uma preferencia já está cadastrada no ambiente de produção, o 
     * seu valor não é alterado.
     * <P>
     */
    public void importar() throws AdsException {
        // <user-code id="806833" parentId="752684" hashcode="-283fe24a" length="106">
        EntOperacoesSistemas oper = new EntOperacoesSistemas(ctx);
        ctx.p(oper.atualizar().replace("\n", "<br>"));
        // </user-code>
    }
}
